﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Objects.DataClasses;
using System.ComponentModel.DataAnnotations;

namespace MineSolutions.ExtendedQueryableFilter.WebDomainApplication.Model
{
    [MetadataTypeAttribute(typeof(Employee.EmployeeMetadata))]
    public partial class Employee : EntityObject
    {
        internal sealed class EmployeeMetadata
        {
            private EmployeeMetadata() { }

            [FilterUIHint("Date")]
            public DateTime BirthDate { get; set; }

            [Display(Name = "Employee ID")]
            [FilterUIHint("Int32")]
            public Int32 EmployeeID { get; set; }

            [FilterUIHint("String")]
            public String Title { get; set; }

            #region Hidden Properties

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Contact Contact { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Int32 ContactID { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Boolean CurrentFlag { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public EntityCollection<Employee> Employee1 { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Employee Employee2 { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public EntityCollection<EmployeeAddress> EmployeeAddresses { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public EntityCollection<EmployeeDepartmentHistory> EmployeeDepartmentHistories { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public EntityCollection<EmployeePayHistory> EmployeePayHistories { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public String Gender { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public DateTime HireDate { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public EntityCollection<JobCandidate> JobCandidates { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public String LoginID { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Nullable<Int32> ManagerID { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public String MaritalStatus { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public DateTime ModifiedDate { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public String NationalIDNumber { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public EntityCollection<PurchaseOrderHeader> PurchaseOrderHeaders { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Guid rowguid { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public Boolean SalariedFlag { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public SalesPerson SalesPerson { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public short SickLeaveHours { get; set; }

            [Display(AutoGenerateField = false, AutoGenerateFilter = false)]
            public short VacationHours { get; set; }

            #endregion
        }
    }
}